Along with marked advances in recent years of computer graphics technology and image processing technology, which are used in the areas of computer games, digital broadcasting and the like, there is a demand for information processing apparatuses, such as computers, game machines and televisions, to have the capacity to process image data of higher definition at higher speed. To meet such demand, it goes without saying that it is necessary to realize high speed of arithmetic processing, but it is just as important to appropriately distribute the tasks among a plurality of processing units.
In so doing, control commands (hereinafter simply referred to as “commands”) for instructing the execution of tasks to one another are sent and received among a plurality of processing units, and thus the processing units operate in linkage with one another. For example, a processing unit A transmits a variety of commands to another processing unit B. The processing unit B queues the received commands in its own queue. The processing unit B executes the commands in the queue in the order of ones easier to execute. This type of processing, namely, command queuing and out-of-order execution, is widely employed as an effective technique in having the processing unit A and the processing unit B operate asynchronously and raising the processing efficiency of a plurality of processing units as a whole.
The commands queued in the processing unit B are transferred to any one of a plurality of command execution entities. Here, the command execution entities may be hardware-like modules, such as various types of arithmetic units built inside the processing unit B or software-based modules, such as processes executed by the processing unit B.
The commands transmitted from the processing, unit A are transferred to the processing B and then to the command execution entities for said commands, so that the tasks are distributed to various types of calculation resources as a whole.
The processing unit B may have a plurality of queues for each command execution entity. When the processing unit A transmits commands to the processing unit B, it may transmit also the ID information for explicitly identifying the command execution entities. In such a case, the processing unit B inputs a received command to the queue of the command execution entity according to the ID information. Then a command is issued, as needed, from each queue to the corresponding command execution entity.
Providing the queue independently for each command execution entity facilitates the smooth issuance of commands to each command execution entity controlled by the processing unit B. For example, even when a command execution entity α is in a busy state and many commands accumulate in a corresponding queue, the queue for a command execution entity β is not directly affected therefrom. This makes it less likely that the command issuance timing to the command execution entity β is delayed excessively according to command execution entity α.
However when the processing unit B receives commands from a processing unit C, which originally does not have such a function of transmitting the ID information as above, it is more general that the processing unit B inputs commands to a particular queue. Hence, when the processing unit B receives commands from the processing unit C, the commands are likely to be accumulated in the particular queue. That is, even if the processing unit B has a plurality of queues, such a merit will not be enjoyed at the time of responding to the processing unit C. In this manner, to effectively take advantage of the function of processing unit B it is prerequisite that the ID information for identifying the command execution entities from the command transmitting entities be transmitted.